package com.iakuil.app.common.core.domain;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

/**
 * Query Object基类
 *
 * <p>DTO可以分为In DTO和Out DTO，查询参数是典型的In DTO,
 * <p>同时实现了CQRS模式中的Query以及RESTful规范中的Field selection。
 * <p>BTW.额外的查询条件可以通过动态参数{@link #props}直接传递到DAO层。
 *
 * @author Kai
 */
@Getter
@Setter
public abstract class BaseQuery extends DynamicFields {

    /**
     * 属性过滤
     *
     * <p>针对<strong>单表</strong>字段进行过滤，未知字段将被忽略，缺省查询所有字段。
     */
    @Schema(description = "属性过滤")
    private String[] fields = {};
}
